package com.swordget.conf;

import com.alibaba.druid.pool.DruidDataSource;
import com.swordget.dao.DataHandlerDao;
import com.swordget.dao.TableManagerDao;
import com.swordget.dao.impl.*;
import com.swordget.util.XDataBaseTypeUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.annotation.Resource;

/**
 * @Author: David
 * @Date: Created in 13:58 2020/3/27
 * @Description: 由于需要支持多数据库，
 * 需要更根据数据库实例化不同的 service 或 dao 实现
 * @Modified By:
 * @Version: 0.0.1
 */
@Configuration
/*@PropertySource("classpath:application.yml")*/
public class BeanConfig {

    /**
     * 获取数据驱动，通过驱动来区分不同数据库
     */
/*
    @Value("${spring.datasource.driver-class-name}")
    private String driverName;
*/

    @Bean
    public TableManagerDao tableManagerDao() {
        if (XDataBaseTypeUtil.equalsOracle()) {
            return  new TableManagerOracleDao();
        } else if (XDataBaseTypeUtil.equalsMySql()) {
            return new TableManagerMysqlDao();
        } else if (XDataBaseTypeUtil.equalsSqlServer()) {
            return new TableManagerSqlServerDao();
        }
        return null;
    }

    @Bean
    public DataHandlerDao dataQueryDao() {
        if (XDataBaseTypeUtil.equalsOracle()) {
            return  new DataHandlerOracleDaoImp();
        } else if (XDataBaseTypeUtil.equalsMySql()) {
            return new DataHandlerMysqlDaoImp();
        } else if (XDataBaseTypeUtil.equalsSqlServer()) {
            return new DataHandlerSqlServerDaoImp();
        }
        return null;
    }




}
